\section{Jerarquía de Archivos e Instrucciones de Compilado}

\textbf{Jerarquía de Archivos}

Presentamos a continuación la organización de archivos y carpetas que utilizamos para la resolución del trabajo práctico.

\begin{figure}[h]
\begin{center}
  \includegraphics[scale=0.50]{jerarquia.png}
  
  \caption{Árbol de Directorios y Carpetas del TP.}
\end{center}
\end{figure}

\begin{itemize}\itemsep2pt
\item[\textbullet] \textbf{Codigo}

Incluye el código fuente utilizado para su resolución. Dentro de esta carpeta podemos encontrar:

  \begin{itemize} \itemsep4pt
  \item[\textbullet] \textbf{inc}
  
  Contiene los archivos header utilizados.
  \item[\textbullet] \textbf{matlab}
  
  Contiene scripts de matlab/octave utilizados para la representación en 3D de las imagenes procesadas.  
  \item[\textbullet] \textbf{src}
  
  Contiene los archivos con el código utilizado para la resolución del TP.  
  \item[\textbullet] \textit{Makefile}
  
  Makefile para compilar el código del TP.
  \end{itemize}

\item[\textbullet] \textbf{Enunciado}

Incluye el enunciado del presente TP.
\item[\textbullet] \textbf{Imagenes}

Contiene carpetas con las distintas imágenes proporcionadas para ser procesadas.
\item[\textbullet] \textbf{Informe}

Incluye el informe correspondiente a la resolución del TP.  
\end{itemize}

\textbf{Instrucciones de Compilado y Ejecución del TP}

Para la compilación del código del TP, ubicarse en la carpeta \texttt{./Codigo} y ejecutar:

\begin{center}
\fbox{\texttt{make}}
\end{center}

El ejecutable obtenido se utiliza de la siguiente manera:

\begin{center}
\fbox{\texttt{./tp2 [-i <nombre\_img>\ <nro\_img\_1>\ <nro\_img\_2>\ <nro\_img\_3>] [-o] [-s] [-d]}}
\end{center}

Donde...

\begin{itemize}
\item \fbox{\texttt{-i}}

Indica las imágenes que se utilizarán como entrada. \texttt{<nombre\_img>} indica el tipo de imagen (esfera, buda, etc.), 
mientras que \texttt{<nro\_img\_1>\ <nro\_img\_2>\ <nro\_img\_3>} indican los números de imagen a utilizar. Por defecto 
se utiliza la esfera, con las imagenes 0, 4 y 11.\\
\item \fbox{\texttt{-o}}

Con esta opción, se crean en el directorio \texttt{./Imagenes} las imagenes ingresadas recortadas por la máscara correspondiente.\\
\item \fbox{\texttt{-s}}

Utiliza los vectores de dirección de iluminación proporcionados por la cátedra. De omitirse, se utilizan las direcciones calculadas.\\
\item \fbox{\texttt{-d}}

Muestra por pantalla mensajes de debug.
\end{itemize}

\textbf{Ejemplo de Uso}

\begin{itemize}
	\item \fbox{\texttt{./tp2 -i buda 2 4 8 -s}}
  
	Corre el ejecutable utilizando las imágenes de buda número 2, 4 y 8 utilizando los vectores de iluminacion proporcionados.   
	\item \fbox{\texttt{./tp2 -s -o -d}}
  
	Corre el ejecutable utilizando las imágenes de la esfera número 0, 4 y 11 utilizando los vectores de iluminacion proporcionados, creando 
	las imágenes recortadas y con mensajes de debug. 
\end{itemize}

\textbf{Graficar en 3D}

Luego de correr el ejecutable, puede obtenerse una representación en 3D de la imagen procesada. Para ello 
ubicarse dentro de la carpeta \texttt{./Codigo/matlab} y utiliar los scripts \texttt{graficarCampoNormal.m} 
(para graficar el campo normal de la imagen) y \texttt{graficarZs.m} (para graficar la imagen en 3D). 
La forma de uso de ambos scripts es la siguiente:

\begin{center}
\fbox{\texttt{graficarZs(fila\_inicio, fila\_fin, colum\_inicio, colum\_fin, filas, colum, salto)}}
\end{center}

Donde \texttt{fila\_inicio} y \texttt{colum\_inicio} indican la primera fila y columna a graficar, \texttt{fila\_fin} \texttt{colum\_fin} indican 
la última fila y columna a graficar, \texttt{filas} y \texttt{colum} indican la cantidad total de filas y columnas, y \texttt{salto} indica 
el muestreo a realizar sobre la imagen (minimo 1).
